La idea de esat clase fue pensar el tradeoff entre descubrir las relaciones de las covariables y las variables explicativas, y por otro lado, la capacidad predictiva entre un modelo de ML por ejemplo.


install.packages("plotly")
install.packages("rgl")
install.packages("plot3D")
install.packages(tidyverse)
install.packages(dplyr)
install.packages(GGally)

library("plotly")
Loading required package: ggplot2
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
library("plot3D")
library(tidyverse) # entorno tidy
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
✓ tibble  3.1.6     ✓ dplyr   1.0.7
✓ tidyr   1.1.4     ✓ stringr 1.4.0
✓ readr   2.1.2     ✓ forcats 0.5.1
✓ purrr   0.3.4     
── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks plotly::filter(), stats::filter()
x dplyr::lag()    masks stats::lag()
library(dplyr) # manejo de datos
library(GGally) # scatterplots multiples
Registered S3 method overwritten by 'GGally':
  method from   
  +.gg   ggplot2
library(rgl) # para graficos 3D
This build of rgl does not include OpenGL functions.  Use
 rglwidget() to display results, e.g. via options(rgl.printRglwidget = TRUE).
df = read.csv("datos_alquiler_crossvalidation.csv", stringsAsFactors = F)
bootstrap=function(dataset, formula, sizeGroup, amountOfGroups){
  coeficientes=list()
  for (i in 1:amountOfGroups) {
    grupo = dataset[sample(nrow(dataset), sizeGroup, replace = T), ]
    modeloActual = lm(formula, data = grupo)
    coeficiente = list(modeloActual$coefficients)
    coeficientes[i] = coeficiente
  }
  return(coeficientes)
}
formu = formula(price~surface_covered+fondo)
l = bootstrap(df, formu, 10, 10000)
mu = c()
alpha = c()
beta = c()
for (i in 1:length(l)) {
  mu[i] = l[[i]][1]
  alpha[i] = l[[i]][2]
  beta[i] = l[[i]][3]
}
fig <- plot_ly(x=~beta, y=~alpha, z=~mu, type="scatter3d", mode="markers",xlab = 'beta (fondo)', ylab= 'alpha (sur cov)', zlab = 'mu (intercept)', size = 1)
fig <- fig %>% layout(title = 'Bootsrap',
         xaxis = list(title = 'beta',
                      zeroline = TRUE,
                      range = c(0, 250)),
         yaxis = list(title = 'Alpha',
                      range = c(0,1400)))

fig
Warning: 'scatter3d' objects don't have these attributes: 'xlab', 'ylab', 'zlab'
Valid attributes include:
'connectgaps', 'customdata', 'customdatasrc', 'error_x', 'error_y', 'error_z', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'projection', 'scene', 'showlegend', 'stream', 'surfaceaxis', 'surfacecolor', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xcalendar', 'xhoverformat', 'xsrc', 'y', 'ycalendar', 'yhoverformat', 'ysrc', 'z', 'zcalendar', 'zhoverformat', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'scatter3d' objects don't have these attributes: 'xlab', 'ylab', 'zlab'
Valid attributes include:
'connectgaps', 'customdata', 'customdatasrc', 'error_x', 'error_y', 'error_z', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'projection', 'scene', 'showlegend', 'stream', 'surfaceaxis', 'surfacecolor', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xcalendar', 'xhoverformat', 'xsrc', 'y', 'ycalendar', 'yhoverformat', 'ysrc', 'z', 'zcalendar', 'zhoverformat', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
summary(mu)
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
-48505.19     -9.94   3400.91   2836.54   6424.13  48776.22 
summary(alpha)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 -472.3   184.9   257.1   276.3   341.9  1679.1 
summary(beta)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-5708.22  -138.62    55.81    38.45   206.84  8269.69 
lm(formu, data = df)$coefficients
    (Intercept) surface_covered           fondo 
     2799.94910       274.71754        36.46581 
LS0tCnRpdGxlOiAiQ2xhc2UgYm9vdHN0cmFwIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpMYSBpZGVhIGRlIGVzYXQgY2xhc2UgZnVlIHBlbnNhciBlbCB0cmFkZW9mZiBlbnRyZSBkZXNjdWJyaXIgbGFzIHJlbGFjaW9uZXMgZGUgbGFzIGNvdmFyaWFibGVzIHkgbGFzIHZhcmlhYmxlcyBleHBsaWNhdGl2YXMsIHkgcG9yIG90cm8gbGFkbywgbGEgY2FwYWNpZGFkIHByZWRpY3RpdmEgZW50cmUgdW4gbW9kZWxvIGRlIE1MIHBvciBlamVtcGxvLiAKYGBge3J9CgppbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQppbnN0YWxsLnBhY2thZ2VzKCJyZ2wiKQppbnN0YWxsLnBhY2thZ2VzKCJwbG90M0QiKQppbnN0YWxsLnBhY2thZ2VzKHRpZHl2ZXJzZSkKaW5zdGFsbC5wYWNrYWdlcyhkcGx5cikKaW5zdGFsbC5wYWNrYWdlcyhHR2FsbHkpCgpgYGAKYGBge3J9CgpsaWJyYXJ5KCJwbG90bHkiKQpsaWJyYXJ5KCJwbG90M0QiKQpsaWJyYXJ5KHRpZHl2ZXJzZSkgIyBlbnRvcm5vIHRpZHkKbGlicmFyeShkcGx5cikgIyBtYW5lam8gZGUgZGF0b3MKbGlicmFyeShHR2FsbHkpICMgc2NhdHRlcnBsb3RzIG11bHRpcGxlcwpsaWJyYXJ5KHJnbCkgIyBwYXJhIGdyYWZpY29zIDNECgpgYGAKCgpgYGB7cn0KZGYgPSByZWFkLmNzdigiZGF0b3NfYWxxdWlsZXJfY3Jvc3N2YWxpZGF0aW9uLmNzdiIsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGKQpgYGAKCmBgYHtyfQpib290c3RyYXA9ZnVuY3Rpb24oZGF0YXNldCwgZm9ybXVsYSwgc2l6ZUdyb3VwLCBhbW91bnRPZkdyb3Vwcyl7CiAgY29lZmljaWVudGVzPWxpc3QoKQogIGZvciAoaSBpbiAxOmFtb3VudE9mR3JvdXBzKSB7CiAgICBncnVwbyA9IGRhdGFzZXRbc2FtcGxlKG5yb3coZGF0YXNldCksIHNpemVHcm91cCwgcmVwbGFjZSA9IFQpLCBdCiAgICBtb2RlbG9BY3R1YWwgPSBsbShmb3JtdWxhLCBkYXRhID0gZ3J1cG8pCiAgICBjb2VmaWNpZW50ZSA9IGxpc3QobW9kZWxvQWN0dWFsJGNvZWZmaWNpZW50cykKICAgIGNvZWZpY2llbnRlc1tpXSA9IGNvZWZpY2llbnRlCiAgfQogIHJldHVybihjb2VmaWNpZW50ZXMpCn0KYGBgCgpgYGB7cn0KZm9ybXUgPSBmb3JtdWxhKHByaWNlfnN1cmZhY2VfY292ZXJlZCtmb25kbykKbCA9IGJvb3RzdHJhcChkZiwgZm9ybXUsIDEwLCAxMDAwMCkKbXUgPSBjKCkKYWxwaGEgPSBjKCkKYmV0YSA9IGMoKQpmb3IgKGkgaW4gMTpsZW5ndGgobCkpIHsKICBtdVtpXSA9IGxbW2ldXVsxXQogIGFscGhhW2ldID0gbFtbaV1dWzJdCiAgYmV0YVtpXSA9IGxbW2ldXVszXQp9CmZpZyA8LSBwbG90X2x5KHg9fmJldGEsIHk9fmFscGhhLCB6PX5tdSwgdHlwZT0ic2NhdHRlcjNkIiwgbW9kZT0ibWFya2VycyIseGxhYiA9ICdiZXRhIChmb25kbyknLCB5bGFiPSAnYWxwaGEgKHN1ciBjb3YpJywgemxhYiA9ICdtdSAoaW50ZXJjZXB0KScsIHNpemUgPSAxKQpmaWcgPC0gZmlnICU+JSBsYXlvdXQodGl0bGUgPSAnQm9vdHNyYXAnLAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAnYmV0YScsCiAgICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGMoMCwgMjUwKSksCiAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICdBbHBoYScsCiAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGMoMCwxNDAwKSkpCgpmaWcKYGBgCmBgYHtyfQpzdW1tYXJ5KG11KQpzdW1tYXJ5KGFscGhhKQpzdW1tYXJ5KGJldGEpCgoKbG0oZm9ybXUsIGRhdGEgPSBkZikkY29lZmZpY2llbnRzCmBgYAoK